import {fileURLToPath, URL} from 'node:url'
import {defineConfig, loadEnv} from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import {env} from "eslint-plugin-vue/lib/configs/base";
import {VantResolver} from "unplugin-vue-components/resolvers";
import Components from 'unplugin-vue-components/vite';


export default defineConfig(({mode}) => {
    // 检查process.cwd()路径下.env.develeport.local、.env.development、.env.local、.env这四个环境文件
    loadEnv(mode, process.cwd());
    return {
        base: './', // 设置打包路径
        plugins: [
            vue(),
            vueJsx(),
            //按需引用vant
            Components({
                resolvers: [VantResolver()],
            }),
        ],
        resolve: {
            alias: {
                '@': fileURLToPath(new URL('./src', import.meta.url))
            }
        },
        css: {
            // css预处理器
            preprocessorOptions: {
                scss: {
                    // 给导入的路径最后加上 ;
                    additionalData: '@import "@/assets/style/mixin.scss";'
                }
            }
        },
        server: {
            port: 8080,
            // open: true,
            host: '0.0.0.0',
            proxy: {
                '/api': {
                    target: 'http://localhost:3000',
                    changeOrigin: true,
                    rewrite: (path) => path.replace(/^\/api/, '')// 将匹配到的api替换成''
                }
            }
        },
        build: {

            outDir: 'dist', // 指定打包路径，默认为项目根目录下的 dist 目录
            sourcemap: env.VITE_BUILD_SOURCEMAP === 'true',
            // minify默认esbuild，esbuild模式下terserOptions将失效
            // vite3变化：Terser 现在是一个可选依赖，如果你使用的是 build.minify: 'terser'，你需要手动安装它 `npm add -D terser`
            minify: 'terser',
            terserOptions: {
                compress: {
                    keep_infinity: true, // 防止 Infinity 被压缩成 1/0，这可能会导致 Chrome 上的性能问题
                    drop_console: env.VITE_BUILD_DROP_CONSOLE === 'true', // 去除 console
                    drop_debugger: true, // 去除 debugger
                },
            },
            chunkSizeWarningLimit: 1500, // chunk 大小警告的限制（以 kbs 为单位）
        },
    }
})
